/**********************************************************************\

 Copyright 2012 Diggory Blake

 This file is part of klip-engine

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.

\**********************************************************************/

#include "kgraphics.h"
#include "kresources.h"
#include "kengine.h"
#include "kview.h"
#include "kimage.h"
#include "kerror.h"
#include "kfont.h"

kGraphics::~kGraphics() {
	if (_imageCache)
		throw kError(_T("kGraphics implementation did not free the image cache!"));
}
kImage* kGraphics::createImage(const std::tstring& resourceUri, keImageOptions options) {
	kResources* resources = getEngine()->getResources();
	kStream* stream = resources->open(resourceUri);
	kImage* result = createImage(stream, options);
	resources->close(stream);

	return result;
}
kEffect* kGraphics::createEffect(const std::tstring& resourceUri) {
	kResources* resources = getEngine()->getResources();
	kStream* stream = resources->open(resourceUri);
	kEffect* result = createEffect(stream);
	resources->close(stream);

	return result;
}
void kGraphics::onAttached(kEngine* engine) {
	kComponent::onAttached(engine);
	_sharedFonts = new kSharedResources<kFont>(this);
	_sharedImages = new kSharedResources<kImage>(this);
}
void kGraphics::onDetached(kEngine* engine) {
	delete _sharedImages; _sharedImages = 0;
	delete _sharedFonts; _sharedFonts = 0;
	kComponent::onDetached(engine);
}
